TCP/IP 協定與 Internet 網路:第六章 IP Routing 協定 上一頁 下一頁
6-12 OSPF 路徑協定
『開放式最短路徑優先』(Open Shortest Path First, OSPF)是在 1980 年中期由 IETF(Internet Engineering Task Force)發展出來,主要應用於 IP 網路中內部閘門之間的路徑選擇協定。和 RIP 相比較,OSPF 能適用於較大網路或異質網路上。OSFP 有兩個重要特性:(1) 是開放性架構(Open),它的規格是公開性的(RFC 1247),任何廠商可任意安裝在自家電腦上,並修改或增加其功能。(2) 它是最短路徑演算法(SPF),在所有路徑之中最短路徑,一般都參考採用 Dijkstra Algorithm(請參考 6-3-4 節)。
6-12-1 拓樸圖資料庫
和其他路徑選擇協定的另一不同點是,OSPF 採用『鏈路狀態路徑選擇法』(Link-State routing)。在 OSPF 下的路由器定時傳送『鏈路狀態宣傳』(Link-State Advertisement, LSA)訊息給同等階級地區的其他路由器,LSA 訊息包含有連接介面、路由值(Metric)、以及其他相關變數值。OSPF 路由器計算這些參數後,並以最短路徑演算法找出,針對網路上(自治系統內)所有路由器中的最短路徑。另外和使用距離向量法的 RIP 或 IGRP 有很大的不同,它們皆傳送某部份(或更新部份)的路由表給其他路由器;而 OSPF 是傳遞路由器所管轄內之『路由拓樸圖』給相鄰之路由器。
OSPF 能將自己管轄的自治系統(Autonomous System, AS)以階層式分割為若干個小區域(如圖 6-30 所示)。基本上,OSPF 是做自治系統內(intra-AS)路徑選擇的功能,但它也有能力處理接收和傳送路徑於自治系統之間(inter-AS)。被分割的小區域一般都稱為網域(Domain),一個網域內也許連接數個路由器和若干個主機。網域之間連接的路由器稱之為邊界路由器(Border Router)或稱骨幹路由器(Backbone Router),如圖中的 Router_4、Router_5、Router_12、Router_11、Router_10、以及 Router_6,它們之間連線稱為骨幹(Backbone)。骨幹路由器和一般網域內路由器(如 Router_3 等)處理不同的拓樸圖資料庫(Topological Database)。
圖 6-30 自治系統內 OSPF 的拓樸圖
網域內所有路由器接收網域內其他路由器所傳送的 LSA 建立網路架構圖,並將其建構於拓樸圖資料庫內。骨幹路由器不僅必須建構網域內的拓樸圖,還必須建立骨幹的拓樸圖資料庫,因此在任一部骨幹路由器上可觀察到所有網域和骨幹網路的拓樸圖。在 OSPF 中有兩種路徑選擇功能:(1) 網域內(intra-domain),處理封包的目的和來源位址皆屬於本網域之路徑選擇;(2) 網域間(inter-domain),跨越不同網域必須透過骨幹路由器轉送。如圖 6-30 網域 3 的主機_B欲傳送封包到網域 2 的主機_A,該封包被傳送到 Router_13、再往前送到 Router_11、再送到 Router_10(inter-domain);之後再經由 Router_9 轉送到 Router_7 到達主機_A(intra-domain)。
因此,骨幹路由器在跨越不同網域之間的路徑選擇,必須搜尋較複雜的拓樸圖資料庫,尤其在做連續封包傳送時,每個封包都必須搜尋資料庫。為了節省搜尋時間及次數,骨幹路由器可以建立虛擬鏈路(Virtual Link),來連結經常使用的路徑。但虛擬路徑在網域內路由器之間是共享而非專屬。骨幹路由器也可以學習經由外部閘門所傳過的路徑訊息,作自治系統之間的路徑選擇功能。
6-12-2 訊息格式
OSPF 訊息的傳輸也不同於 RIP 方式,RIP 是利用 UDP 封包封裝,再以廣播方式傳送給相鄰路由器。而 OSPF 有自己的協定號碼(Protocol=89),可以直接包裝在 IP 封包內(如圖 5-10),並用多點傳輸(Class D 位址),因此可以減少網路負荷。圖 6-31 為 OSPF 封包格式,其中各欄位功能如下:
● 版本(Version, Ver):表示該封包之 OSPF 的版本。
● 型態(Type):表示該封包的工作型態,有下列四種型態:
○ Hello:建立和管理相鄰路由器關係。
○ Database Description:描述拓樸圖資料庫的內容。這些訊息將因調整資料庫而被改變。
○ Link-state Request:向相鄰路由器要求傳遞某些片段的拓樸圖資料庫。這些訊息被傳送是因為某些路由器發現資料庫的內容已經失去時效性,要求重新更新。
○ Link-state Update:回應 Link-state Request 要求。傳送中的訊息可能經由 LSA 訊息修正過。
○ Link-state Acknowledge:確認接收到回應訊息。
● 封包長度(Length, Len):整個封包的長度,以位元組為單位。
● Router ID:發送封包的來源路由器之識別碼。
● Area ID:來源封包之區域(或網域)的識別碼。
● Checksum(CS):檢查集之檢查碼。
● 認證型態(Authentication Type, AT):內容為認證型態。所有 OSPF 的交換訊息都必須經過認證,任何區域可自行規劃認證型態。
● 認證(Authentication, Auth):內容為認證訊息。
● 資料(Data):傳送給上層通訊協定之包裝資料。
圖 6-31 OSPF 封包格式
未來 OSPF 將被加入等效價格(equal-cost)與多重路徑選擇(multipath routing)的功能,使路徑選擇能依照上層服務型態(Type-of-Service, ToS)的要求來配置路徑。ToS 路徑選擇是由上層通訊協定依照服務的特殊需求而制定,因此可達到服務品質(Quality of Service, QoS)的需求。在應用上,譬如某個封包特別緊急,如果 OSPF 有不同優先等級鏈路,就可讓它優先通過。OSPF 提供一個或多個路由值(metric)計算路徑效率,如果只採用一個路由值,將沒有所謂 ToS 功能,我們可按照 ToS 的需求採用多種有關的路由值。例如在 IP ToS 之下,我們可採用延遲、傳輸量、可靠度等等參數,再由 OSPF 計算出等效價格(equal-cost)的路徑。